home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / lwres / netdb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-09-17  |  12.6 KB  |  521 lines

  1. /*
  2.  * Copyright (C) 2004, 2005  Internet Systems Consortium, Inc. ("ISC")
  3.  * Copyright (C) 2000, 2001  Internet Software Consortium.
  4.  *
  5.  * Permission to use, copy, modify, and distribute this software for any
  6.  * purpose with or without fee is hereby granted, provided that the above
  7.  * copyright notice and this permission notice appear in all copies.
  8.  *
  9.  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  10.  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  11.  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  12.  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  13.  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  14.  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  15.  * PERFORMANCE OF THIS SOFTWARE.
  16.  */
  17.  
  18. /* $Id: netdb.h.in,v 1.35.18.2 2005/04/29 00:17:22 marka Exp $ */
  19.  
  20. /*! \file */
  21.  
  22. #ifndef LWRES_NETDB_H
  23. #define LWRES_NETDB_H 1
  24.  
  25. #include <stddef.h>    /* Required on FreeBSD (and  others?) for size_t. */
  26. #include <netdb.h>    /* Contractual provision. */
  27.  
  28. #include <lwres/lang.h>
  29.  
  30. /*
  31.  * Define if <netdb.h> does not declare struct addrinfo.
  32.  */
  33. #undef ISC_LWRES_NEEDADDRINFO
  34.  
  35. #ifdef ISC_LWRES_NEEDADDRINFO
  36. struct addrinfo {
  37.     int        ai_flags;      /* AI_PASSIVE, AI_CANONNAME */
  38.     int        ai_family;     /* PF_xxx */
  39.     int        ai_socktype;   /* SOCK_xxx */
  40.     int        ai_protocol;   /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
  41.     size_t        ai_addrlen;    /* Length of ai_addr */
  42.     char        *ai_canonname; /* Canonical name for hostname */
  43.     struct sockaddr    *ai_addr;      /* Binary address */
  44.     struct addrinfo    *ai_next;      /* Next structure in linked list */
  45. };
  46. #endif
  47.  
  48. /*
  49.  * Undefine all #defines we are interested in as <netdb.h> may or may not have
  50.  * defined them.
  51.  */
  52.  
  53. /*
  54.  * Error return codes from gethostbyname() and gethostbyaddr()
  55.  * (left in extern int h_errno).
  56.  */
  57.  
  58. #undef    NETDB_INTERNAL
  59. #undef    NETDB_SUCCESS
  60. #undef    HOST_NOT_FOUND
  61. #undef    TRY_AGAIN
  62. #undef    NO_RECOVERY
  63. #undef    NO_DATA
  64. #undef    NO_ADDRESS
  65.  
  66. #define    NETDB_INTERNAL    -1    /* see errno */
  67. #define    NETDB_SUCCESS    0    /* no problem */
  68. #define    HOST_NOT_FOUND    1 /* Authoritative Answer Host not found */
  69. #define    TRY_AGAIN    2 /* Non-Authoritive Host not found, or SERVERFAIL */
  70. #define    NO_RECOVERY    3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
  71. #define    NO_DATA        4 /* Valid name, no data record of requested type */
  72. #define    NO_ADDRESS    NO_DATA        /* no address, look for MX record */
  73.  
  74. /*
  75.  * Error return codes from getaddrinfo()
  76.  */
  77.  
  78. #undef    EAI_ADDRFAMILY
  79. #undef    EAI_AGAIN
  80. #undef    EAI_BADFLAGS
  81. #undef    EAI_FAIL
  82. #undef    EAI_FAMILY
  83. #undef    EAI_MEMORY
  84. #undef    EAI_NODATA
  85. #undef    EAI_NONAME
  86. #undef    EAI_SERVICE
  87. #undef    EAI_SOCKTYPE
  88. #undef    EAI_SYSTEM
  89. #undef    EAI_BADHINTS
  90. #undef    EAI_PROTOCOL
  91. #undef    EAI_MAX
  92.  
  93. #define    EAI_ADDRFAMILY     1    /* address family for hostname not supported */
  94. #define    EAI_AGAIN     2    /* temporary failure in name resolution */
  95. #define    EAI_BADFLAGS     3    /* invalid value for ai_flags */
  96. #define    EAI_FAIL     4    /* non-recoverable failure in name resolution */
  97. #define    EAI_FAMILY     5    /* ai_family not supported */
  98. #define    EAI_MEMORY     6    /* memory allocation failure */
  99. #define    EAI_NODATA     7    /* no address associated with hostname */
  100. #define    EAI_NONAME     8    /* hostname nor servname provided, or not known */
  101. #define    EAI_SERVICE     9    /* servname not supported for ai_socktype */
  102. #define    EAI_SOCKTYPE    10    /* ai_socktype not supported */
  103. #define    EAI_SYSTEM    11    /* system error returned in errno */
  104. #define EAI_BADHINTS    12
  105. #define EAI_PROTOCOL    13
  106. #define EAI_MAX        14
  107.  
  108. /*
  109.  * Flag values for getaddrinfo()
  110.  */
  111. #undef    AI_PASSIVE
  112. #undef    AI_CANONNAME
  113. #undef    AI_NUMERICHOST
  114.  
  115. #define    AI_PASSIVE    0x00000001
  116. #define    AI_CANONNAME    0x00000002
  117. #define AI_NUMERICHOST    0x00000004
  118.  
  119. /*
  120.  * Flag values for getipnodebyname()
  121.  */
  122. #undef AI_V4MAPPED
  123. #undef AI_ALL
  124. #undef AI_ADDRCONFIG
  125. #undef AI_DEFAULT
  126.  
  127. #define AI_V4MAPPED    0x00000008
  128. #define AI_ALL        0x00000010
  129. #define AI_ADDRCONFIG    0x00000020
  130. #define AI_DEFAULT    (AI_V4MAPPED|AI_ADDRCONFIG)
  131.  
  132. /*
  133.  * Constants for lwres_getnameinfo()
  134.  */
  135. #undef    NI_MAXHOST
  136. #undef    NI_MAXSERV
  137.  
  138. #define    NI_MAXHOST    1025
  139. #define    NI_MAXSERV    32
  140.  
  141. /*
  142.  * Flag values for lwres_getnameinfo()
  143.  */
  144. #undef    NI_NOFQDN
  145. #undef    NI_NUMERICHOST
  146. #undef    NI_NAMEREQD
  147. #undef    NI_NUMERICSERV
  148. #undef    NI_DGRAM
  149. #undef    NI_NUMERICSCOPE
  150.  
  151. #define    NI_NOFQDN    0x00000001
  152. #define    NI_NUMERICHOST    0x00000002
  153. #define    NI_NAMEREQD    0x00000004
  154. #define    NI_NUMERICSERV    0x00000008
  155. #define    NI_DGRAM    0x00000010
  156. #define    NI_NUMERICSCOPE    0x00000020    /*2553bis-00*/
  157.  
  158. /*
  159.  * Define if <netdb.h> does not declare struct rrsetinfo.
  160.  */
  161. #define ISC_LWRES_NEEDRRSETINFO 1
  162.  
  163. #ifdef ISC_LWRES_NEEDRRSETINFO
  164. /*
  165.  * Structures for getrrsetbyname()
  166.  */
  167. struct rdatainfo {
  168.     unsigned int        rdi_length;
  169.     unsigned char        *rdi_data;
  170. };
  171.  
  172. struct rrsetinfo {
  173.     unsigned int        rri_flags;
  174.     int            rri_rdclass;
  175.     int            rri_rdtype;
  176.     unsigned int        rri_ttl;
  177.     unsigned int        rri_nrdatas;
  178.     unsigned int        rri_nsigs;
  179.     char            *rri_name;
  180.     struct rdatainfo    *rri_rdatas;
  181.     struct rdatainfo    *rri_sigs;
  182. };
  183.  
  184. /*
  185.  * Flags for getrrsetbyname()
  186.  */
  187. #define RRSET_VALIDATED        0x00000001
  188.     /* Set was dnssec validated */
  189.  
  190. /*
  191.  * Return codes for getrrsetbyname()
  192.  */
  193. #define ERRSET_SUCCESS        0
  194. #define ERRSET_NOMEMORY        1
  195. #define ERRSET_FAIL        2
  196. #define ERRSET_INVAL        3
  197. #define    ERRSET_NONAME         4
  198. #define    ERRSET_NODATA         5
  199. #endif
  200.  
  201. /*
  202.  * Define to map into lwres_ namespace.
  203.  */
  204.  
  205. #define LWRES_NAMESPACE
  206.  
  207. #ifdef LWRES_NAMESPACE
  208.  
  209. /*
  210.  * Use our versions not the ones from the C library.
  211.  */
  212.  
  213. #ifdef getnameinfo
  214. #undef getnameinfo
  215. #endif
  216. #define getnameinfo lwres_getnameinfo
  217.  
  218. #ifdef getaddrinfo
  219. #undef getaddrinfo
  220. #endif
  221. #define getaddrinfo lwres_getaddrinfo
  222.  
  223. #ifdef freeaddrinfo
  224. #undef freeaddrinfo
  225. #endif
  226. #define freeaddrinfo lwres_freeaddrinfo
  227.  
  228. #ifdef gai_strerror
  229. #undef gai_strerror
  230. #endif
  231. #define gai_strerror lwres_gai_strerror
  232.  
  233. #ifdef herror
  234. #undef herror
  235. #endif
  236. #define herror lwres_herror
  237.  
  238. #ifdef hstrerror
  239. #undef hstrerror
  240. #endif
  241. #define hstrerror lwres_hstrerror
  242.  
  243. #ifdef getipnodebyname
  244. #undef getipnodebyname
  245. #endif
  246. #define getipnodebyname lwres_getipnodebyname
  247.  
  248. #ifdef getipnodebyaddr
  249. #undef getipnodebyaddr
  250. #endif
  251. #define getipnodebyaddr lwres_getipnodebyaddr
  252.  
  253. #ifdef freehostent
  254. #undef freehostent
  255. #endif
  256. #define freehostent lwres_freehostent
  257.  
  258. #ifdef gethostbyname
  259. #undef gethostbyname
  260. #endif
  261. #define gethostbyname lwres_gethostbyname
  262.  
  263. #ifdef gethostbyname2
  264. #undef gethostbyname2
  265. #endif
  266. #define gethostbyname2 lwres_gethostbyname2
  267.  
  268. #ifdef gethostbyaddr
  269. #undef gethostbyaddr
  270. #endif
  271. #define gethostbyaddr lwres_gethostbyaddr
  272.  
  273. #ifdef gethostent
  274. #undef gethostent
  275. #endif
  276. #define gethostent lwres_gethostent
  277.  
  278. #ifdef sethostent
  279. #undef sethostent
  280. #endif
  281. #define sethostent lwres_sethostent
  282.  
  283. #ifdef endhostent
  284. #undef endhostent
  285. #endif
  286. #define endhostent lwres_endhostent
  287.  
  288. /* #define sethostfile lwres_sethostfile */
  289.  
  290. #ifdef gethostbyname_r
  291. #undef gethostbyname_r
  292. #endif
  293. #define gethostbyname_r lwres_gethostbyname_r
  294.  
  295. #ifdef gethostbyaddr_r
  296. #undef gethostbyaddr_r
  297. #endif
  298. #define gethostbyaddr_r lwres_gethostbyaddr_r
  299.  
  300. #ifdef gethostent_r
  301. #undef gethostent_r
  302. #endif
  303. #define gethostent_r lwres_gethostent_r
  304.  
  305. #ifdef sethostent_r
  306. #undef sethostent_r
  307. #endif
  308. #define sethostent_r lwres_sethostent_r
  309.  
  310. #ifdef endhostent_r
  311. #undef endhostent_r
  312. #endif
  313. #define endhostent_r lwres_endhostent_r
  314.  
  315. #ifdef getrrsetbyname
  316. #undef getrrsetbyname
  317. #endif
  318. #define getrrsetbyname lwres_getrrsetbyname
  319.  
  320. #ifdef freerrset
  321. #undef freerrset
  322. #endif
  323. #define freerrset lwres_freerrset
  324.  
  325. #ifdef notyet
  326. #define getservbyname lwres_getservbyname
  327. #define getservbyport lwres_getservbyport
  328. #define getservent lwres_getservent
  329. #define setservent lwres_setservent
  330. #define endservent lwres_endservent
  331.  
  332. #define getservbyname_r lwres_getservbyname_r
  333. #define getservbyport_r lwres_getservbyport_r
  334. #define getservent_r lwres_getservent_r
  335. #define setservent_r lwres_setservent_r
  336. #define endservent_r lwres_endservent_r
  337.  
  338. #define getprotobyname lwres_getprotobyname
  339. #define getprotobynumber lwres_getprotobynumber
  340. #define getprotoent lwres_getprotoent
  341. #define setprotoent lwres_setprotoent
  342. #define endprotoent lwres_endprotoent
  343.  
  344. #define getprotobyname_r lwres_getprotobyname_r
  345. #define getprotobynumber_r lwres_getprotobynumber_r
  346. #define getprotoent_r lwres_getprotoent_r
  347. #define setprotoent_r lwres_setprotoent_r
  348. #define endprotoent_r lwres_endprotoent_r
  349.  
  350. #ifdef getnetbyname
  351. #undef getnetbyname
  352. #endif
  353. #define getnetbyname lwres_getnetbyname
  354.  
  355. #ifdef getnetbyaddr
  356. #undef getnetbyaddr
  357. #endif
  358. #define getnetbyaddr lwres_getnetbyaddr
  359.  
  360. #ifdef getnetent
  361. #undef getnetent
  362. #endif
  363. #define getnetent lwres_getnetent
  364.  
  365. #ifdef setnetent
  366. #undef setnetent
  367. #endif
  368. #define setnetent lwres_setnetent
  369.  
  370. #ifdef endnetent
  371. #undef endnetent
  372. #endif
  373. #define endnetent lwres_endnetent
  374.  
  375.  
  376. #ifdef getnetbyname_r
  377. #undef getnetbyname_r
  378. #endif
  379. #define getnetbyname_r lwres_getnetbyname_r
  380.  
  381. #ifdef getnetbyaddr_r
  382. #undef getnetbyaddr_r
  383. #endif
  384. #define getnetbyaddr_r lwres_getnetbyaddr_r
  385.  
  386. #ifdef getnetent_r
  387. #undef getnetent_r
  388. #endif
  389. #define getnetent_r lwres_getnetent_r
  390.  
  391. #ifdef setnetent_r
  392. #undef setnetent_r
  393. #endif
  394. #define setnetent_r lwres_setnetent_r
  395.  
  396. #ifdef endnetent_r
  397. #undef endnetent_r
  398. #endif
  399. #define endnetent_r lwres_endnetent_r
  400. #endif    /* notyet */
  401.  
  402. #ifdef h_errno
  403. #undef h_errno
  404. #endif
  405. #define h_errno lwres_h_errno
  406.  
  407. #endif    /* LWRES_NAMESPACE */
  408.  
  409. LWRES_LANG_BEGINDECLS
  410.  
  411. extern int lwres_h_errno;
  412.  
  413. int        lwres_getaddrinfo(const char *, const char *,
  414.                  const struct addrinfo *, struct addrinfo **);
  415. int        lwres_getnameinfo(const struct sockaddr *, size_t, char *,
  416.                  size_t, char *, size_t, int);
  417. void        lwres_freeaddrinfo(struct addrinfo *);
  418. char        *lwres_gai_strerror(int);
  419.  
  420. struct hostent    *lwres_gethostbyaddr(const char *, int, int);
  421. struct hostent    *lwres_gethostbyname(const char *);
  422. struct hostent    *lwres_gethostbyname2(const char *, int);
  423. struct hostent    *lwres_gethostent(void);
  424. struct hostent    *lwres_getipnodebyname(const char *, int, int, int *);
  425. struct hostent    *lwres_getipnodebyaddr(const void *, size_t, int, int *);
  426. void        lwres_endhostent(void);
  427. void        lwres_sethostent(int);
  428. /* void        lwres_sethostfile(const char *); */
  429. void        lwres_freehostent(struct hostent *);
  430.  
  431. int        lwres_getrrsetbyname(const char *, unsigned int, unsigned int,
  432.                      unsigned int, struct rrsetinfo **);
  433. void        lwres_freerrset(struct rrsetinfo *);
  434.  
  435. #ifdef notyet
  436. struct netent    *lwres_getnetbyaddr(unsigned long, int);
  437. struct netent    *lwres_getnetbyname(const char *);
  438. struct netent    *lwres_getnetent(void);
  439. void        lwres_endnetent(void);
  440. void        lwres_setnetent(int);
  441.  
  442. struct protoent    *lwres_getprotobyname(const char *);
  443. struct protoent    *lwres_getprotobynumber(int);
  444. struct protoent    *lwres_getprotoent(void);
  445. void        lwres_endprotoent(void);
  446. void        lwres_setprotoent(int);
  447.  
  448. struct servent    *lwres_getservbyname(const char *, const char *);
  449. struct servent    *lwres_getservbyport(int, const char *);
  450. struct servent    *lwres_getservent(void);
  451. void        lwres_endservent(void);
  452. void        lwres_setservent(int);
  453. #endif /* notyet */
  454.  
  455. void        lwres_herror(const char *);
  456. const char    *lwres_hstrerror(int);
  457.  
  458.  
  459. struct hostent    *lwres_gethostbyaddr_r(const char *, int, int, struct hostent *,
  460.                     char *, int, int *);
  461. struct hostent    *lwres_gethostbyname_r(const char *, struct hostent *,
  462.                     char *, int, int *);
  463. struct hostent    *lwres_gethostent_r(struct hostent *, char *, int, int *);
  464. void        lwres_sethostent_r(int);
  465. void        lwres_endhostent_r(void);
  466.  
  467. #ifdef notyet
  468. struct netent    *lwres_getnetbyname_r(const char *, struct netent *,
  469.                     char *, int);
  470. struct netent    *lwres_getnetbyaddr_r(long, int, struct netent *,
  471.                     char *, int);
  472. struct netent    *lwres_getnetent_r(struct netent *, char *, int);
  473. void        lwres_setnetent_r(int);
  474. void        lwres_endnetent_r(void);
  475.  
  476. struct protoent    *lwres_getprotobyname_r(const char *,
  477.                 struct protoent *, char *, int);
  478. struct protoent    *lwres_getprotobynumber_r(int,
  479.                 struct protoent *, char *, int);
  480. struct protoent    *lwres_getprotoent_r(struct protoent *, char *, int);
  481. void        lwres_setprotoent_r(int);
  482. void        lwres_endprotoent_r(void);
  483.  
  484. struct servent    *lwres_getservbyname_r(const char *name, const char *,
  485.                     struct servent *, char *, int);
  486. struct servent    *lwres_getservbyport_r(int port, const char *,
  487.                     struct servent *, char *, int);
  488. struct servent    *lwres_getservent_r(struct servent *, char *, int);
  489. void        lwres_setservent_r(int);
  490. void        lwres_endservent_r(void);
  491. #endif    /* notyet */
  492.  
  493. LWRES_LANG_ENDDECLS
  494.  
  495. #ifdef notyet
  496. /* This is nec'y to make this include file properly replace the sun version. */
  497. #ifdef sun
  498. #ifdef __GNU_LIBRARY__
  499. #include <rpc/netdb.h>        /* Required. */
  500. #else /* !__GNU_LIBRARY__ */
  501. struct rpcent {
  502.     char    *r_name;    /* name of server for this rpc program */
  503.     char    **r_aliases;    /* alias list */
  504.     int    r_number;    /* rpc program number */
  505. };
  506. struct rpcent    *lwres_getrpcbyname();
  507. struct rpcent    *lwres_getrpcbynumber(),
  508. struct rpcent    *lwres_getrpcent();
  509. #endif /* __GNU_LIBRARY__ */
  510. #endif /* sun */
  511. #endif /* notyet */
  512.  
  513. /*
  514.  * Tell Emacs to use C mode on this file.
  515.  * Local variables:
  516.  * mode: c
  517.  * End:
  518.  */
  519.  
  520. #endif /* LWRES_NETDB_H */
  521.